Шаг 144 - Реализуем раздельные приложения.

Итак, мы сделаем два приложения. Первое это ActiveX EXE в котором реализуем нашу поддержку VBA, а второе приложение клиент. Я убрал форму в ActiveX и изменил модуль инициализации.

Public vbas As Apc
Public myapp As MyAppication

Sub Main()
Set myapp = New MyAppication
Set vbas = New Apc

End Sub

А в класс приложения добавил свойство hWndHost, и соответственно разделил инициализацию класса и показ среды.

'local variable(s) to hold property value(s)

Private mvarhWndHost As Long 'local copy


Public Property Let hWndHost(ByVal vData As Long)
'used when assigning a value to the property, on the left side of an assignment.
'Syntax: X.hWndHost = 5
    mvarhWndHost = vData
End Property


Public Property Get hWndHost() As Long
'used when retrieving value of a property, on the right side of an assignment.
'Syntax: Debug.Print X.hWndHost
    hWndHost = mvarhWndHost
End Property



Public Sub Show()
vbas.Ide.Visible = True
End Sub

Public Sub Init()
vbas.LicenseKey = "16175148714896599659AFABD8ED3C2A416B45E4CD6F5484BD8CE1"
vbas.ApplicationObject = myapp
vbas.hWnd = mvarhWndHost
End Sub

Создал приложение клиент.

144_1.gif (4886 b)

В момент загрузки формы инициализирую класс, а в момент выбора меню показываю VBA среду.

Private Sub Form_Load()
 Set pr = New MyProject.MyAppication
 pr.hWndHost = Me.hWnd
 pr.Init
End Sub

Private Sub VBA_Click()
 
        pr.Show
    
End Sub

В результате все показывается и переключается. Это уже хорошо.

Hosted by uCoz